package com.zzt.controller;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.zzt.entity.GoodsAndMessage;
import com.zzt.entity.Goodsinfo;
import com.zzt.entity.Gwc;
import com.zzt.entity.Memberinfo;
import com.zzt.service.GoodsinfoService;
import com.zzt.util.RedisUtils;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.util.List;

@RestController
@CrossOrigin
public class GoodsinfoController {
    @Resource
    GoodsinfoService goodsinfoService;

    @RequestMapping("/AllGoods")
    public PageInfo getAllGoods(@RequestParam(value = "pageNum",defaultValue = "1") Integer pageNum
                ,@RequestParam(value = "tno",defaultValue = "-1") int tno
            ,@RequestParam(value = "inputs",defaultValue = "-1") String inputs
            ,@RequestParam(value = "sp",defaultValue = "0") int sp
            ,@RequestParam(value = "ep",defaultValue = "0") int ep) throws Exception {

        //一共4种情况： 1单独分类查询  2单独搜索查询  3分类和搜索一起   4全部展示
        List<Goodsinfo> goodsinfos = null;
        //引用分页  一次给25个
        //跟在后面的第一个就是分页查询
        int pageSize = 25;
        PageHelper.startPage(pageNum,pageSize);

        // 再加1种： 价格查询  ps：如果有价格查询 直接进行价格查询 不进行其他查询了
        if(ep!=0){
            goodsinfos = goodsinfoService.queryPrice(sp, ep);
            System.out.println("价格搜索: "+sp+" -> "+ep);

        }else{  //如果不进行价格搜索 才进行其他搜索
            //没有搜索也没有分类: 4.查全部
            if(inputs.equals("-1") && tno == -1){                     //4. 无搜+无分
                //无缓存，才去数据库查
                goodsinfos = goodsinfoService.queryAllGoods();

            //只知道搜索了 但是不知道有没有包含分类 在里面进行分类       // 2+3
            }else if(!inputs.equals("-1")){
                goodsinfos = goodsinfoService.queryInputs(inputs,tno);
//                System.out.println("2+3");

                //没有搜索  只分类
            }else if(inputs.equals("-1") && tno!=-1){                 //1. 无搜+分
                goodsinfos = goodsinfoService.queryType(tno);
//                System.out.println("无搜+分");

            }else {
                throw new Exception("搜索出现异常！");
            }
        }

        //查完之后用pageInfo包装
        PageInfo pageInfo = new PageInfo(goodsinfos,5);//只显示连续的5页
        return pageInfo;
    }

    @GetMapping("/goods/{gno}")
    public GoodsAndMessage getGoods(@PathVariable("gno") int gno){
        Goodsinfo goodsinfo = goodsinfoService.queryGoods(gno);
        if(goodsinfo==null){
            return new GoodsAndMessage(null,-1,"恶意查询");
        }
        return new GoodsAndMessage(goodsinfo,1,"查询成功");
    }

    @GetMapping("/addgoods/{gno}")
    public Gwc addGoods(@PathVariable("gno") int gno, HttpServletRequest request){
        HttpSession session = request.getSession();
        Memberinfo user = (Memberinfo)session.getAttribute("user");
//        if(user==null){
//            System.out.println("未登录不可添加购物车");
//            return new Gwc(-1,-1,"noLogin",null,null);
//        }
        Gwc gwc = goodsinfoService.addGoods(user.getMno(), gno);
        return gwc;
    }

//    @RequestMapping("/searchGoods")
//    public PageInfo searchGoods(@RequestParam(value = "pageNum",defaultValue = "1") Integer pageNum){
//        //引用分页  一次给25个
//        PageHelper.startPage(pageNum,25);
//        //跟在后面的第一个就是分页查询
//        List<Goodsinfo> goodsinfos = goodsinfoService.queryGoods();
//        //查完之后用pageInfo包装
//        PageInfo pageInfo = new PageInfo(goodsinfos,5);//只显示连续的5页
//
//        return pageInfo;
//    }
}
